/**
 * 使用 Playwright/Chrome 在每日任务中打开 anyrouter 控制台地址。
 * 逻辑：
 * 1) 先用 Playwright（channel=chrome，复用真实 Chrome）访问 URL，判断是否跳到 /login。
 * 2) 首选 Profile："Profile 1"（即“Person 1”）。如果检测到登录页，则切回 "Default" 再检测。
 * 3) 选择最终可用的 Profile 后，关闭 Playwright，用命令行独立启动 Chrome 打开页面，确保窗口留存。
 *
 * Windows 设定：
 * - Chrome: C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe
 * - User Data 根目录：%LOCALAPPDATA%\\Google\\Chrome\\User Data
 * - Profile 目录名："Profile 1"（Person 1）与 "Default"
 *
 * JSDoc 注释与日志输出均使用中文。
 */

// @ts-check

const path = require('path')
const { spawn } = require('child_process')
// 方案2：不使用 Playwright，直接通过命令行启动 Chrome

/**
 * 目标 URL
 * @type {string}
 */
const TARGET_URL = 'https://anyrouter.top/console/token'

/**
 * Chrome 可执行文件路径（已由用户确认）
 * @type {string}
 */
const CHROME_PATH = "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"
// 由用户确认：C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe

/**
 * 获取本机 User Data 根目录
 * @returns {string}
 */
function getUserDataDir() {
  const localAppData = process.env.LOCALAPPDATA
  if (!localAppData) {
    throw new Error('无法读取环境变量 LOCALAPPDATA，请在 Windows 上运行本脚本。')
  }
  return path.join(localAppData, 'Google', 'Chrome', 'User Data')
}

// 方案2取消了检测逻辑，因为 Chrome 可能已在运行，复用用户数据目录会失败

/**
 * 用系统 Chrome 独立启动目标 URL（保持窗口）
 * @param {string} profileDirectory
 */
function launchChromeDetached(profileDirectory) {
  const userDataDir = getUserDataDir()
  const args = [
    `--user-data-dir=${userDataDir}`,
    `--profile-directory=${profileDirectory}`,
    TARGET_URL,
  ]

  // 使用 spawn 支持 detached，让 Chrome 独立运行
  const child = spawn(CHROME_PATH, args, {
    detached: true,
    stdio: 'ignore',
    windowsHide: false,
  })
  child.unref()
}

;(async () => {
  try {
    console.log('方案2执行：直接打开 Profile 1（Person 1）...')
    launchChromeDetached('Profile 1')
    // 为避免已登录状态不明，延时再打开 Default 作为兜底
    setTimeout(() => {
      console.log('方案2执行：打开 Default 作为兜底...')
      launchChromeDetached('Default')
    }, 8000)
  } catch (e) {
    console.error('执行出错：', e)
    process.exitCode = 1
  }
})()


